package cn.edu.ecut.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 1、注解 ( Annotation) 是一种特殊的接口，采用  “@interface” 来声明
 * 2、掌握在注解类型中声明 属性的方法 ( 像定义抽象方法一样来声明注解的属性 )
 *    	但是，在当做注解的属性使用的 抽象方法中不允许使用参数
 * 3、注解的属性的类型可以是 基本类型 、String类型、 Class类型 、注解类型 、枚举类型 以及这些类型对应的数组类型
 * 4、可以在 属性 之后 ( 抽象方法的参数小括号之后 ) 使用 default 关键字 定义 属性的默认值
 * 5、对注解(annotation)进行标注的注解(annotation)就是元注解(meta-annotation) : "@Target" 、"@Retention"
 * 6、所有的注解都继承了 java.lang.annotation.Annotation 接口
 */
@Retention( value = RetentionPolicy.RUNTIME )
@Target( value = { ElementType.FIELD } )
public @interface Assign {
	
	// 注解中可以像接口一样定义 常量
	
	// 只能借助于 抽象方法 的形式 来为 注解 声明 "属性"
	String value() default "" ;
	
	// 抽象方法的名称 就是 注解的属性名称，比如 value 就是一个属性名
	// 抽象方法的返回类型 就是 注解中属性的类型，比如 value 属性的类型是 String

}
